# import sys
# sys.path.append('/usr/local/lib/python3.11/site-packages/PyQt5')

# from pyQt5 import QtWidgets ,QApplication
# from PyQt5 import QStandardItemModel
from PyQt5.QtWidgets import QApplication, QWidget, QListView, QTableView, QVBoxLayout
from PyQt5.QtCore import Qt, QAbstractTableModel, QModelIndex, QAbstractItemModel




class CustomTableModel(QAbstractTableModel):
    def __init__(self, data):
        super(CustomTableModel, self).__init__()
        self.data = data

    def rowCount(self, parent=None):
        return len(self.data)

    def columnCount(self, parent=None):
        return len(self.data[0])

    def data(self, index, role):
        if index.isValid():
            row = index.row()
            col = index.column()
            return self.data[row][col]
        else:
            return None

    def headerData(self, section, orientation, role):
        if orientation == Qt.Horizontal:
            return f"Column {section + 1}"
        elif orientation == Qt.Vertical:
            return f"Row {section + 1}"
        else:
            return None



def show_list_view():
    # 创建一个应用程序对象
    app = QApplication([])

    # 创建一个窗口对象
    window = QWidget()

    # 创建一个列表模型
    # model = QStandardItemModel()
    # model.appendRow([QStandardItem("苹果"), QStandardItem("香蕉"), QStandardItem("樱桃")])
# QtCore.QAbstractItemModel
    # 创建一个列表视图，并设置模型
    # QAbstractItemView
    # model =  CustomTableModel([["苹果", "香蕉", "樱桃"], ["梨子", "西瓜", "葡萄"]])
    # model = QListView.Model(["苹果", "香蕉", "樱桃"])
    listView = QListView()
    # listView.setModel(model)
    data = ["item 1", "item 2", "item 3"]
    listView.addItems(data)

    # 将列表视图添加到窗口中
    window.setLayout(QVBoxLayout())
    window.layout().addWidget(listView)

    # 显示窗口
    window.show()

    # 进入主事件循环，等待用户交互
    app.exec_()

def show_table_view():
    # 创建一个应用程序对象
    app = QApplication([])

    # 创建一个窗口对象
    window = QWidget()

    
# 创建一个包含字符串列表的模型
    model =  CustomTableModel([["苹果", "香蕉", "樱桃"], ["梨子", "西瓜", "葡萄"]])
    
    # QTableView.model([["苹果", "香蕉", "樱桃"], ["梨子", "西瓜", "葡萄"]])

# 创建一个 QTableView 对象
    table_view = QTableView()

# 将模型设置为 QTableView 的模型
    table_view.setModel(model)

    # 创建一个表格模型
    # model = QStandardItemModel(3, 3)
    # model = QAbstractItemModel(3,3)
    # model.setItem(0, 0, QStandardItem("苹果"))
    # model.setItem(0, 1, QStandardItem("香蕉"))
    # model.setItem(0, 2, QStandardItem("樱桃"))
    # model.setItem(1, 0, QStandardItem("西瓜"))
    # model.setItem(1, 1, QStandardItem("橙子"))
    # model.setItem(1, 2, QStandardItem("柠檬"))
    # model.setItem(2, 0, QStandardItem("葡萄"))
    # model.setItem(2, 1, QStandardItem("芒果"))
    # model.setItem(2, 2, QStandardItem("猕猴桃"))

    # 创建一个表格视图，并设置模型
    # table_view = QTableView()
    # table_view.setModel(model)

    # 将表格视图添加到窗口中
    window.setLayout(QVBoxLayout())
    window.layout().addWidget(table_view)

    # 显示窗口
    window.show()

    # 进入主事件循环，等待用户交互
    app.exec_()

if __name__ == "__main__":
    show_list_view()
    # show_table_view()